<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<style>
    * {
        margin: 0;
        padding: 0;
    }

    .search {
        position: relative;
        width: 178px;
        margin: 100px;
    }

    .con {
        display: none;
        position: absolute;
        top: -40px;
        width: 171px;

        border: 1px solid rgba(0, 0, 0, .2);
        padding: 5px 0;

        box-shadow: 0 2px 4px rgba(0, 0, 0, .2);
        font-size: 18px;
        line-height: 20px;
        color: #333;
    }

    .con::before {
        content: '';
        width: 0;
        height: 0;

        position: absolute;
        top: 28px;
        left: 18px;

        /* 画出倒立的三角形关键步骤 */
        border: 8px solid #000;
        border-style: solid dashed dashed;
        border-color: #fff transparent transparent;
    }
</style>
<body>
<div class="search">
    <div class="con"></div>
    <input class="jd" placeholder="请输入您的快递单号" type="text">
</div>

<script>
    // 1.快递单号输入内容时, 上面的大号字体盒子(con)显示
    // 2.同时把快递单号的值(value)获取出来赋值给con盒子(innerText)作为内容
    // 3.如果快递单号里面内容为空, 则隐藏大号字体盒子(con 盒子)

    // 4.注意: keydown 和 keypress在文本框里面的特点: 他们两个事件触发的时候, 文字没有落入文本框中
    // 5.keyup事件触发的时候, 文字已经落入文本框里面了
    var con = document.querySelector('.con');
    var jdInput = document.querySelector('.jd');

    jdInput.addEventListener('keyup', function (e) {
        if (this.value === '') {
            con.style.display = 'none';
        } else {
            con.style.display = 'block';
            con.innerText = this.value;
        }
    });

    // 当文本框失去焦点, 提示框隐藏起来
    jdInput.addEventListener('blur', function () {
        con.style.display = 'none';
    })
    // 当文本框获得焦点, 提示框显示起来
    jdInput.addEventListener('focus', function () {
        // 内容为空, 就不显示出来
        if (this.value !== '') {
            con.style.display = 'block';
        }

    })
</script>
</body>
</html>
